using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Marlimer.Logical.Comercial;
using Marlimer.Common;
using Marlimer.Comercial.Reportes.Crystals;  

namespace Marlimer.Comercial.Reportes.Formularios
{
    public partial class frm_RepKPI : Form
    {

        lcom_Modulo lcom_modulo = new lcom_Modulo();
        lcom_Ruta lcom_ruta = new lcom_Ruta();
        lcom_GrupoVenta lcom_grupoventa = new lcom_GrupoVenta();
        lcom_Zona lcom_zona = new lcom_Zona(); 

        List<itemsGrilla> itemsGrid = new List<itemsGrilla>();
        List<InfoParamRpt> paramsrpt = new List<InfoParamRpt>();

        rptRepKPI RptRepKPI = new rptRepKPI();

        public frm_RepKPI()
        {
            InitializeComponent();
        }

        private void frm_rptKPI_Load(object sender, EventArgs e)
        {
            dtpFecIni.Value = DateTime.Today;
            dtpFecFin.Value = DateTime.Today;

            itemsGrid.Add(new itemsGrilla("ccod_grpvta", "Codigo", 50, true, true, DataGridViewContentAlignment.MiddleRight));
            itemsGrid.Add(new itemsGrilla("cnom_grpvta", "Grupo Venta", 120, true, true, DataGridViewContentAlignment.MiddleLeft));

            CargarCombos();
            this.Location = new Point(0, 0);
            ConfigurarRejilla();
            //cargamos la grilla de grupos de venta
            gridResultados.DataSource = lcom_grupoventa.getDTGrupoVenta();
            Util.setRejillaColumns(gridResultados, itemsGrid);

            DataGridViewCheckBoxColumn colchk = new DataGridViewCheckBoxColumn();
            colchk.HeaderText = "Seleccionar";
            colchk.Name = "flg_seleccionado";
            colchk.Width = 60;
            colchk.TrueValue = true;
            colchk.FalseValue = false;
            gridResultados.Columns.Add(colchk); 
        }

        private void ConfigurarRejilla()
        {
            gridResultados.Columns.Clear();
            gridResultados.Columns.Add(Util.createDataGridTextColumn("Codigo", 50, true, true, DataGridViewContentAlignment.MiddleLeft));
            gridResultados.Columns.Add(Util.createDataGridTextColumn("Grupo Venta", 120, true, true, DataGridViewContentAlignment.MiddleLeft));
            gridResultados.Columns.Add(Util.createDataGridTextColumn("", 60, true, true, DataGridViewContentAlignment.MiddleLeft));

            //gridResultados.AllowUserToResizeColumns = false;
            gridResultados.AllowUserToResizeRows = false;
            gridResultados.RowHeadersVisible = false;
            gridResultados.AllowUserToAddRows = false;
            gridResultados.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
        }


        private void CargarCombos()
        {
            Util.LlenarDataCombo(lcom_zona.getDTZona(), cboZona, true);   
        }

        private void nuevaBusqueda()
        {
            CargarCombos(); 
        }

        private void txtGeneralEntero_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = Util.validaTecla(e.KeyChar, "Entero", ((TextBox)sender).Text, true);
        }

        private void cboGeneral_KeyPress(object sender, KeyPressEventArgs e)
        {
            Util.validaEnter(e.KeyChar);
        }

        private void txtGeneral_Leave(object sender, EventArgs e)
        {
            TextBox txt = (TextBox)sender;
            String value = "";
            int valuenum = -1;
            String nametxt = txt.Name;
            object newval = null;

            if (txt.Text.Trim() != "")
            {
                value = txt.Text;
                valuenum = Convert.ToInt32(Util.ToValor(txt.Text));
            }

            switch (nametxt)
            {
                case "txtCodZona":
                    {
                        cboZona.SelectedValue = valuenum;
                        newval = cboZona.SelectedValue;
                        break;
                    }
            }
            txt.Text = Convert.ToString(newval);
        }

        private void cboGeneralDT_SelectedIndexChanged(object sender, EventArgs e)
        {
            ComboBox cbo = (ComboBox)sender;
            String valor = "";
            String namecbo = cbo.Name;
            //validamos que el indice seleccionado sea mayor a -1
            if (cbo.SelectedIndex > -1 && cbo.SelectedValue.ToString() != "System.Data.DataRowView")
            {
                valor = Convert.ToString(cbo.SelectedValue);
            }

            switch (namecbo)
            {
                case "cboZona":
                    {
                        txtCodZona.Text = valor;
                        break;
                    }
            }
        }

        private void tstComandos_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            int indice = tstComandos.Items.IndexOf(e.ClickedItem);
            switch (indice)
            {
                case 0:     //nuevo
                    {
                        nuevaBusqueda();
                        break;
                    }
                case 1:     //imprimir o mostrar
                    {
                        CargarReporte();
                        break;
                    }
                case 2:
                    {
                        Util.exportReporte(RptRepKPI); 
                        break;
                    }
            }
        }


        private void txtGeneralSelect_Enter(object sender, EventArgs e)
        {
            Util.selectAllText(((TextBox)sender));
        }

        private void txtCodModulo_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.KeyChar = Convert.ToChar(e.KeyChar.ToString().ToUpper());
            e.Handled = Util.validaTecla(e.KeyChar, "AlfaNumerico", ((TextBox)sender).Text, true);
        }


        private void CargarReporte()
        {
            Boolean seleccionados = false;
            String cadena="";
            //verificamos que se ingresen todos los datos.
            //debe seleccionarse por lo menos un grupo de venta
            gridResultados.EndEdit();   
            for (int i = 0; i < gridResultados.Rows.Count; i++)
            {
                if (Convert.ToBoolean(gridResultados.Rows[i].Cells["flg_seleccionado"].Value))
                {
                    seleccionados = true;
                    cadena = cadena + Convert.ToString(gridResultados.Rows[i].Cells["ccod_grpvta"].Value) + ",";
                }
            }

            if (seleccionados)
            {
                cadena = cadena.Substring(0, cadena.Length - 1);
                //establecemos los parametros
                paramsrpt.Clear();
                paramsrpt.Add(new InfoParamRpt("@dfec_ini", dtpFecIni.Value));
                paramsrpt.Add(new InfoParamRpt("@dfec_fin", dtpFecFin.Value));
                paramsrpt.Add(new InfoParamRpt("@ccod_zona", Convert.ToInt32(cboZona.SelectedValue)));
                paramsrpt.Add(new InfoParamRpt("@ccods_grpvta", cadena));

                //verificar segun tipo de formato    
                //llamar al rpt segun el tipo de documento
                try
                {
                    crpReporte.ReportSource = Util.setRptParams(RptRepKPI, paramsrpt);
                    tblExportar.Enabled = true; 
                }
                catch (Exception ex)
                {
                    tblExportar.Enabled = false; 
                }
            }
            else
            {
                MessageBox.Show("Debe seleccionar por lo menos un Grupo de Venta", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

        private void gridResultados_ColumnHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.ColumnIndex == gridResultados.Columns["flg_seleccionado"].Index)
            {
                gridResultados.CurrentRow.Cells["ccod_grpvta"].Selected = true;
                //recorrer todas las celdas
                for (int i = 0; i < gridResultados.Rows.Count; i++)
                {
                    DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)gridResultados.Rows[i].Cells["flg_seleccionado"];
                    if (Convert.ToBoolean(chk.Value))
                    {
                        chk.Value = false;
                    }
                    else
                    {
                        chk.Value = true;
                    }
                }
            }
        }

    }
}